/*
 * Anillo.h
 *
 *  Created on: Mar 19, 2010
 *      Author: jgrande
 */

#ifndef ANILLO_H_
#define ANILLO_H_

#include <list>

#include "../Common/CommonTypes.h"
#include "../Common/MensajeNuevoAnillo.h"
#include "../Common/MensajeAgregarReceptor.h"
#include "../Common/MensajeQuitarReceptor.h"

#include "../Comunicaciones/MiddlewareCliente.h"

using std::list;

using middleware::common::MensajeNuevoAnillo;
using middleware::common::MensajeAgregarReceptor;
using middleware::common::MensajeQuitarReceptor;
using middleware::common::Direccion;

namespace middleware {
namespace directorio {

class Anillo {

	list<Direccion> emisores;

	bool creado;

	Anillo(const Anillo&);
	Anillo& operator=(const Anillo&);

public:
	Anillo(list<Direccion> emisores, list<Direccion> receptores);
	virtual ~Anillo();

	virtual bool agregarReceptor(Direccion receptor);
	virtual bool quitarReceptor(Direccion receptor);

	virtual operator bool() const { return creado; }
};

}

}

#endif /* ANILLO_H_ */
